找出「交互效应」,让线性模型更万能 | 协和八
说人话的统计学
前面几集里面我们逐步地介绍了统计模型里面最实用的线性回归模型。
线性回归模型假设自变量 x 和因变量 y 之间存在线性的关系,当 x 是分类变量时,线性模型等价于我们之前讲过的 ANOVA 模型;当 x 是连续变量的时候,线性模型的表达式为:
确定模型后,我们可以用极大似然估计来找到线性模型的参数——截距 β0 和回归系数 β1,并且对这些参数作假设检验,做出统计推断。
当然,自变量 x 可以有不止一个。我们上一集的例子里面,孩子的身高与性别有关,也和父母身高有关,而性别是分类变量。
对于这两个自变量与因变量之间的相互关系,我们引入了两个假设:
❶ 给定性别的情况下,子女身高与父母身高之间具有线性关系
❷ 不管父母身高如何,男孩与女孩的身高差别不变,这一假设也就等价于男孩数据与女孩数据所得到的回归线斜率是相等的。如下图所示:
基于这些假设,我们得到了双因素情况下的一种线性回归模型:
如果我们再仔细推敲一下上面的两个假设,❶ 是线性模型的必要条件,必须得保留,而假设 ❷ 似乎值得商榷。
认真观察上面的数据点,好像父母身高越高,男孩(蓝色数据点)与女孩(黑色数据点)的身高差距越大。如果我们将男孩、女孩的数据点各自拿出来,分别拟合一个线性模型找出最佳回归线,我们可以发现其实这两条线并不平行(如下图):
那是不是说明我们前面的假设是错误的呢?
当然,两条单独拟合出来的回归线斜率不可能完全相等,关键还要看这两条回归线的斜率是否具有统计学意义上的显著差异,这可不是靠眼睛看出来的,而是要通过建立新的模型,直接对这个问题做假设检验才能知道。
其实这个问题并不是我们第一次遇到,咱们之前在《多因素ANOVA=好几个单因素ANOVA?可没这么简单!》 里面也提到过。在这里,我们不妨先来温故而知新,复习一下多因素 ANOVA 里面的情况。
多因素 ANOVA 是为了研究两个或以上的类别变量(因素)对观测值的影响。设想现在有两个因素 A 和 B 可能影响测量值 y,A 有三个分组,B 有两个分组,我们把因素 A 作为 x 轴,分别绘出 B 的取值为 1 和 0 时 y 随着 A 因素变化的曲线。
如果两条线大体平行,说明因素 A 的效应不依赖于因素 B,也就是说没有交互效应(下图左);如果不并行,则很有可能有交互效应(下图右)。
ANOVA 是线性模型的一种特殊形式,它的自变量都是离散的类别变量。如果上图的 x 轴变成了连续变量,因素 A 对 y 的影响依然有可能也依赖于因素 B,因此交互效应并不是 ANOVA 特有的。只要模型中不只一个因素(也就是线性模型里面的自变量,也称为预测变量)的时候,交互效应就有可能存在。
为了在线性模型中考虑到可能存在的交互效应,我们需要在模型里面加入新的「交互效应」项:β3*x1*x2 。
这时线性模型就变成了:
看到这里,你可能有点蒙圈,为什么在我们的模型里面加入了 β3*x1*x2 就可以检验交互效应是否存在呢?别着急,下面我们就来探个究竟。
因为性别 x2 是一个二分类变量,所以我们基于上集《自变量不止一个,线性回归该怎么做?》文章末尾讨论过的原因,规定男孩取 1,女孩取 0。
咱们来看看当性别 x2 取不同的值时,带有交互效应的模型会变成什么样子。
当 x2 取 0,也就是只看女孩的身高数据时,
化简之后,不难看出,
上面的公式看着很是眼熟,不就是单因素情况下的线性模型表达式吗?也就是说,在考虑了交互效应的情况下拟合出的女孩身高与父母身高的线性关系,几乎等价于单独用女孩的数据找出的两者关系,这下我们就容易理解 β0 以及 β1 的含义了。
类似的道理,当 x2 取 1 时,也就是当我们只看男孩的身高数据时,我们的模型变成:
咱们把与 x1 有关的项合并一下,再把与 x1 无关的项合并一下,会发现:
从上面的公式可以看出,如果 x1 增加了1个单位,y 会增加 β1 + β3 。这就说明了,在引入了交互效应后,当我们只看男孩的身高数据,在父母身高和子女身高的关系依然是线性关系,只是回归线的斜率不再是 β1,而是 β1 +β3 ,而截距也与女孩时的 β0 不同,变成了 β0 + β2 。
读到这里有些爱思考的读者可能会问,加入交互效应,看似繁复的公式,结果好像跟给男孩和女孩分别拟合回归线,建立两个独立的线性模型没什么差别呀?单个自变量的线性回归我已经很熟悉啦,为什么还要引入交互效应?
这是因为,是否存在交互效应,在很多科研问题中本身就是一个重要的结果。
通过在线性模型中引入交互效应项,我们才能把男孩身高模型中的斜率表达为 β1 + β3 这种形式,方便之后对 β3 进行统计推断,来判断交互效应是否具有统计显著性。如果我们分开男、女做两个回归模型,两个关于父母身高的斜率是否有差别,就不那么容易检验了。
另外,在一定的条件下,利用全体数据建立带有交互效应的模型,而不是针对男孩和女孩数据的单独模型,可以得到对参数更准确的估计。
如果把带有交互效应的线性模型写开:
在这个模型里面,假设了男孩和女孩具有相同的标准差参数 σ,如果数据确实满足这一假设,那么在交互效应的模型里面男女性样本之间可以互相借用信息,从而提高估计(尤其是标准差参数)的准确性。σ 估计得好,对于回归系数们的假设检验的统计效能也就更高了。
如果 β3 显著地大于或小于 0,说明男孩与女孩的身高随父母平均身高的变化率是不一样的,下图中男孩和女孩的分别拟合的回归线会不平行,也就是存在交互效应。
加入了交互效应之后的线性模型依然可以用极大似然估计和假设检验来找出最佳的回归系数以及对应的置信区间。
下表是统计软件对这个新模型给出的结果(由于在性别这个变量中,我们把男性标记为 1,为了表达清晰,我们把这个变量称为「男性」):
估计值 | t 值 | p 值 | 95% 置信区间 | |
截距 β0 | 88.06 | 5.19 | 4.67e-06 | [54.89, 122.23] |
父母平均身高 β1 | 0.20 | 1.95 | 0.057 | [-0.007, |
男性 β2 | -55.02 | -2.29 | 0.027 | [-103.37, |
父母平均身高 x 男性(交互作用) β3 | 0.38 | 2.56 | 0.014 | [0.08, |
我们把估计值代入到模型里面,可得到下面的定量关系:
子女身高 ~ 88.06 + 0.20 x 父母平均身高 - 55.02 x 男性 + 0.38 x 父母平均身高 x 男性
根据我们前面的讨论,从这个结果可以推导出
女孩身高 ~ 88.06 + 0.20 x 父母平均身高
以及
男孩身高 ~ 88.06 - 55.02 + (0.20 + 0.38)x 父母平均身高
下面我们来逐个解读上面模型里各个参数的含义:
首先,截距 β0 和父母平均身高的回归系数 β1 意义与单因素的情况类似:父母身高平均值等于 0 时女孩身高的平均值是 88.06;父母平均身高每增加一个单位,女孩身高也增加 0.2 个单位。 这里我们也可以看到,虽然模型在计算时包含了男孩和女孩的身高数据,回归系数 β0 以及 β1 的意义只和女孩的身高有关。
交互效应的回归系数 β3 = 0.38 指的是当父母平均身高增加一个单位时,男孩会比女孩多增加 0.38 单位的身高。也就是上面将男孩和女孩数据分别进行线性回归得到对两条回归线的斜率之差。由于 β3 的 p值为 0.014,说明这两条回归线的斜率的差异具有统计学意义上面的显著性,也就是说,父母平均身高和孩子性别之间存在显著的交互效应。
最后我们再看看男性的回归系数 β2 ,它的估计值是 -55.02。在上一集里,当模型中没有交互效应的时候,我们说过,这个参数的意义是,父母身高相同的时候,男孩比女孩矮 55.02。但是,现在我们的模型中有了交互效应存在,我们对回归系数的解释可就要小心了——这个问题有点绕,甚至很多老司机都会犯晕,大家一定要认真咀嚼理解下面的讨论。
为什么这么说呢?只要我们对模型的形式门儿清,这个事情并不费解。我们在上面给出过根据几个回归系数,男、女孩身高分别父母平均身高的关系:
女孩身高 ~ 88.06 + 0.20 x 父母平均身高
男孩身高 ~ 88.06 - 55.02 + (0.20 + 0.38)x 父母平均身高
如果我们用上面关于女孩的式子,减去下面关于男孩的式子,就会得到:
女孩身高 - 男孩身高 ~ 55.02 - 0.38 x 父母平均身高
我们立马就能发现,如果我们想要知道平均来讲女孩和男孩的身高差,就再也不能像上一集没有交互效应的模型那样,直接说出一个数了。现在,这个问题的答案多了这么一个拖油瓶。
也就是说,如果你问模型,女孩比男孩身高差多少?模型一定得先反问你一句:父母的平均身高是多少?
从前面的式子中不难看出,父母平均身高越高,女孩身高与男孩身高相差越大(因为父母平均身高都大于 140,所以等式右边「55.02 - 0.38 x 父母平均身高」整体是负的,而且父母平均身高越大,负得越多)。而什么时候女孩、男孩之间身高差才是 55.02 呢?当且仅当这个拖油瓶不存在,也就是父母平均身高为 0 的时候。
总结一下,由于有交互效应的存在,在不同父母身高的情况下,男孩与女孩身高的差距也不一样。所以不能抛开父母身高来谈来理解男性这一自变量的回归系数。
聪明如你,一定能想到,其实说了这么半天,归根结底就是图里两条回归线不平行这件事而已。不过呢,就是这同一件事,换个样子,就能把许多人绕进去,希望你读过这篇以后,不会是其中一员了噢!
事实上,由于父母平均身高不可能为 0,我们也不会想要关心这时候男孩比女孩高或者矮多少,所以这里的 β2 并没有多少现实意义。相反我们更关心父母身高取值合理的时候(比如取样本的平均值时),男孩大概比女孩高多少。下面,我们就介绍一个小技巧,能大大改善回归系数的实际意义。
我们可以先把父母平均身高 x1 做一个转换,减去其平均值,转换后的父母平均身高记作 x1',在上面的模型中使用转换后的数据 x1' 而不是原始值 x1 。因为转换完的数据平均值为 0,这一过程也被称为对数据做「中心化」(centralization)处理。
使用转换后的数据来建立模型,可以使得系数 β0 和 β2 的含义更直接。为什么呢?从之前的讨论里我们知道,在模型
中,β0 是两个自变量 x1,x2 都取 0 时(模型认为的)因变量 y 的平均值,而 β2 是在自变量 x1 取 0 时,x2 取 1(男性)和取 0(女性)这两组的因变量 y 的平均值之差。而当 x1 是未转换的父母平均身高时,它不可能取到 0,因而导致了这两个系数没有实际意义。但是,如果我们用的是中心化之后的数值 x1',由于 x1' 取 0 时真实的父母身高就是人群平均值,所以 β0 就成为了父母身高取人群平均值时女孩(因为性别 x2 要取0)的平均身高,而 β2 就成为了父母身高取人群平均值时男、女孩的平均身高差。
如果此时 β2 显著的大于 0,我们便可以推断,在父母身高与人群平均值差不多的时候,男孩的身高显著地比女孩高。
那么你也许要问,中心化以后,β0 和 β2 变了,β1 和 β3 的数值和意义会不会也有变化?答案是否定的。因为 β1 和 β3 的意义都和 y 随着自变量 x1 增长一个单位的变化率有关。在中心化操作中,我们只是把所有的 x1 都减去了它们全体的平均值,并没有对它们进行压缩或者扩展。因此,以前 x1 增长了一个单位,现在 x1’ 仍然是增长了一个单位,因此β1 和 β3 不论是数值、意义乃至假设检验的显著性,都不会发生变化。
由于对自变量做这样的线性变换并不会改变线性模型的好坏,以及 β1 和 β3 各个回归系数是否具有统计显著性的结论,同时又能增加系数数值的可读性,所以一般情况下在把连续型数据丢到模型里面之前,都提倡先进行中心化处理。
END
回复「统计学」可查看「说人话的统计学」系列合辑
或点击下方标题可阅读本系列任意文章
干货
第1章 高屋建瓴看统计
第2章 算术平均数与正态分布
第3章 t检验:两组平均数的比较
第4章 方差分析(ANOVA):多组平均数的比较
第5章 线性回归:统计建模初步
(未完,更新中)
自检
番外篇
作者:田菊
编辑:黑草乌叶